package com.pls.action;

import com.pls.actionObjects.DeleteEmployeeSeatRequest;
import com.pls.actionObjects.DeleteEmployeeSeatResponse;
import com.pls.actionObjects.GetEmployeeDetailsRequest;
import com.pls.actionObjects.GetEmployeeDetailsResponse;
import com.pls.actionObjects.ReportRequest;
import com.pls.actionObjects.ReportResponse;
import com.pls.actionObjects.GetSeatCodeByFloorRequest;
import com.pls.actionObjects.GetSeatCodeByFloorResponse;
import com.pls.actionObjects.GetSeatMapByFloorRequest;
import com.pls.actionObjects.GetSeatMapByFloorResponse;
import com.pls.actionObjects.GetSeatMapByQuadrantRequest;
import com.pls.actionObjects.GetSeatMapByQuadrantResponse;
import com.pls.actionObjects.GetWorkstationMapByNameRequest;
import com.pls.actionObjects.GetWorkstationMapByNameResponse;
import com.pls.actionObjects.SearchRequest;
import com.pls.actionObjects.SearchResponse;
import com.pls.actionObjects.ValidateLoginRequest;
import com.pls.actionObjects.ValidateLoginResponse;

public class PlsService {
	
	
	public ValidateLoginResponse validateLogin(ValidateLoginRequest request){
		ValidateLoginHandler handler = new ValidateLoginHandler(ValidateLoginResponse.class);
		ValidateLoginResponse response = handler.Execute(request);

		
		return response;
	}

	public DeleteEmployeeSeatResponse deleteEmployeeSeat(
			DeleteEmployeeSeatRequest request) {

		DeleteEmployeeSeatHandler handler = new DeleteEmployeeSeatHandler(
				DeleteEmployeeSeatResponse.class);
		DeleteEmployeeSeatResponse response = handler.Execute(request);

		return response;

	}
	/*
	 * Return seatmap per quadrant per floor per location
	 */
	public GetSeatMapByQuadrantResponse getSeatmapByQuadrant(
			GetSeatMapByQuadrantRequest request) {

		GetSeatMapByQuadrantHandler handler = new GetSeatMapByQuadrantHandler(
				GetSeatMapByQuadrantResponse.class);
		GetSeatMapByQuadrantResponse response = handler.Execute(request);

		return response;

	}

	/*
	 * Return seatmap per floor per location
	 */
	public GetSeatMapByFloorResponse getSeatmapByFloor(
			GetSeatMapByFloorRequest request) {

		GetSeatMapByFloorHandler handler = new GetSeatMapByFloorHandler(
				GetSeatMapByFloorResponse.class);
		GetSeatMapByFloorResponse response = handler.Execute(request);

		return response;

	}

	/*
	 * Search function
	 */
	public SearchResponse search(SearchRequest request) {

		// Get the handler for the function
		SearchEmployeeHandler handler = new SearchEmployeeHandler(
				SearchResponse.class);
		SearchResponse response = handler.Execute(request);

		return response;
	}
	
	/*
	 * get Employee details
	 */
	public GetEmployeeDetailsResponse getEmployeeDetails(GetEmployeeDetailsRequest request) {

		// Get the handler for the function
		GetEmployeeDetailsHandler handler = new GetEmployeeDetailsHandler(
				GetEmployeeDetailsResponse.class);
		GetEmployeeDetailsResponse response = handler.Execute(request);

		return response;
	}
	
	/*
	 * get workstation map
	 */
	public GetWorkstationMapByNameResponse getEmployeeWorkstationMap(GetWorkstationMapByNameRequest request) {

		// Get the handler for the function
		GetWorkstationMapByNameHandler handler = new GetWorkstationMapByNameHandler(
				GetWorkstationMapByNameResponse.class);
		GetWorkstationMapByNameResponse response = handler.Execute(request);

		return response;
	}

	public GetSeatCodeByFloorResponse getSeatmapByFloor(
			GetSeatCodeByFloorRequest request) {
		// Get the handler for the function
		GetSeatCodeByFloorHandler handler = new GetSeatCodeByFloorHandler(
				GetSeatCodeByFloorResponse.class);
		GetSeatCodeByFloorResponse response = handler.Execute(request);

		return response;
		
	}
	
	/*
	 * Return seat plan list per floor per location report
	 */
	public ReportResponse getReportSeatPlanList(
			ReportRequest request) {

		ReportsHandler handler = new ReportsHandler(
				ReportResponse.class);
		ReportResponse response = handler.Execute(request);

		return response;

	}

}
